package com.linyaonan.leetcode.easy._628;

import java.util.Arrays;

/**
 *
 * 给定一个整型数组，在数组中找出由三个数组成的最大乘积，并输出这个乘积。
 *
 * 示例 1:
 *
 * 输入: [1,2,3]
 * 输出: 6
 * 示例 2:
 *
 * 输入: [1,2,3,4]
 * 输出: 24
 * 注意:
 *
 * 给定的整型数组长度范围是[3,104]，数组中所有的元素范围是[-1000, 1000]。
 * 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。
 *
 *
 * @author: Lin
 * @date: 2020/1/4
 */
public class MaximumProduct {

    public int maximumProduct(int[] nums) {
        // 最小值
        if (nums.length == 3) {
            return nums[0] * nums[1] * nums[2];
        } else {
            Arrays.sort(nums);
            int l = nums.length;
            int lMax = nums[l - 1] * nums[l - 2] * nums[l - 3];
            if (nums[0] < 0 && nums[1] < 0) {
                lMax = Math.max(nums[0] * nums[1] * nums[l - 1], lMax);
            }
            return lMax;
        }
    }
}
